package com.example.kotlincoroutines.kotlin

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

/**
 * runBlocking
 *
 * 打印结果：
 * Hello
 * DefaultDispatcher-worker-2
 * DefaultDispatcher-worker-3
 * world 1
 */
fun main() {

    //创建一个协程runBlocking,不指定调度器运行在main方法上
    //协程运行在线程上
    // Dispatchers调度器:
    // IO: 网络请求，耗时操作(网络请求数据库)
    // Default: 密集型的数据处理操作，数据计算
    // Main:
    println("Hello")
    val i = runBlocking(Dispatchers.Default) {
        println(Thread.currentThread().name)

        //未指定调度器
        val job = this.launch {
            delay(3000)
            println(Thread.currentThread().name)
        }

        println(job.isActive)
        println(job.cancel())
        println(job.isActive)
        println("second")
        delay(2000)
    }
    println("world $i")

}

